AYA/YAYA 系統函式參照表 †根據字母順序一一進行解說。
ACOS †返回反餘弦值。參數的單位為radian。 ANY †參數為字串的時候,會視為簡易陣列,隨機選取其中一個字串。參數為變數的時候,會考慮其分隔符號。 DinnerTalk { unknownfood = ("蕎麥麵不加蕎麥","牛肉麵不加牛肉","黑暗鍋") _i = "\0今天想吃" + ANY(unknownfood) + "。\1" + EVAL("unknownfood[LSO]") + "?" _i } 選擇的序數可以從變數LSO取得。 S:「今天想吃黑暗鍋。」 K:「黑暗鍋?」 ARRAYSIZE [v4:具備簡易陣列的互換性、2參數的方式已廢止] †參數指定為簡易陣列及泛用陣列,傳回此陣列的元素總數量。 ASEARCH †檢索泛用陣列中的值。第一參數是檢索的關鍵字、第二參數之後是指定要檢索的泛用陣列(不能是簡易陣列)。 _tea = ("鐵觀音", "烏龍", "やぶきた", "茉莉花") ipod = ASEARCH("烏龍", _tea) ipod等於1。 nyaoh = ASEARCH("猫", "麒麟", "猿", "象", "貓", "兔") nyaoh等於3。 由於搜尋時採用比較單純的線性檢索,所以搜尋花費的時間會隨著陣列的長度而改變。 ASEARCHEX †檢索泛用陣列中的值。第一參數是檢索的關鍵字、第二參數之後是指定要檢索的泛用陣列(不能是簡易陣列)。 _tea = ("鐵観音", "烏龍", "やぶきた", "烏龍", "茉莉花") ipod = ASEARCHEX("烏龍", _tea) ipod等於泛用陣列 (1,3) 。 ASIN †返回反正弦值。參數的單位為radian。 ATAN †返回反正切值。參數的單位為radian。 BINSTRTOI [v4:BINSTRTONUM改名] †將2進位數值字串轉換成整數。參數異常時傳回0。 BITWISE_AND [Tc513-901] †位元操作 AND 運算子(32位元)。異常時不回傳。 _val1 = 30 // 2進數為11110 _val2 = 13 // 2進數為01101 BITWISE_AND( _val1, _val2 ) // 輸出整數12(01100) BITWISE_NOT [Tc513-901] †位元操作 NOT 運算子(32位元)。異常時不回傳。 _val = 28 // 2進數為00011100 BITWISE_NOT( _val ) // 輸出整數-29(11100011) BITWISE_OR [Tc513-901] †位元操作 OR 運算子(32位元)。異常時不回傳。 _val1 = 28 // 2進數為11100 _val2 = 9 // 2進數為01001 BITWISE_OR( _val1, _val2 ) // 輸出整數29(11101) BITWISE_SHIFT [Tc513-901] †位元操作位移運算子(32位元)。異常時不回傳。 _var=0x7fffffff _result=BITWISE_SHIFT(_var,-2); _result為0x1fffffff。 BITWISE_XOR [Tc513-901] †位元操作 XOR 運算子(32位元)。異常時不回傳。 _val1 = 28 // 2進數為11100 _val2 = 9 // 2進數為01001 BITWISE_XOR( _val1, _val2 ) // 輸出整數21(10101) CEIL [v4] †實數的小數點無條件進位。 CHARSETIDTOTEXT [Tc513-901] †CHARSETIDTOTEXT(code) 轉換文字編碼為文字編碼名稱。失敗時回傳"default"。 CHARSETLIB †CHARSETLIB(code) CHARSETLIB() 指定外部程式庫通信所使用的文字編碼。 預設文字編碼在基礎設定檔案的charset.extension項目(省略時為charset項目)所設定的值。 CHARSETLIBEX [Tc513-901] †CHARSETLIBEX(path,code) CHARSETLIBEX(path) 指定特定外部程式庫通信所使用的文字編碼。 CHARSETTEXTTOID [Tc513-901] †CHARSETTEXTTOID(string) 轉換文字編碼名稱為文字編碼編號。失敗時回傳0。 CHR [v4:ASC的擴張。與ASCII範圍有互換性] †根據UCS-2代碼返回1文字。 Test { _a = "ABC" _b = "%(CHR(65))%(CHR(66))%(CHR(67))" _c = "現在時間是%(hour)時%(minute)分%(second)秒。" _d = EVAL("%(CHR(34))現在時間是%(hour)時%(minute)分%(second)秒%。(CHR(34))") } _a與_b相等,_c與_d相等。CHR(34)等同於雙括號( " )。 CHRCODE [v4:IASC的擴張。與ASCII範圍有互換性] †將指定字串開頭的1文字轉換為UCS-2文字代碼並傳回。 COS [v4] †返回餘弦值。參數的單位為radian。 COSH [Tc522-1] †返回雙曲餘弦值。參數的單位為radian。 CUTSPACE [v4] †字串左右端有空白文字或標記文字的時候,予以去除。 CVAUTO †根據參數指定的變數的內容自動轉換形態,將字串轉為整數或實數。 CVINT [v4:TONUMBER改名] †參數指定的變數為存有整數值形式的字串時,將字串轉為整數。 CVREAL †參數指定的變數為存有實數值形式的字串時,將字串轉為實數。 CVSTR [v4:TOSTRING改名] †參數為變數時,將變數的內容轉換為字串。 DUMPVAR [Tc529-2] †DUMPVAR() 將所有變數往紀念檔輸出。 ERASE [v4:單位由byte單位變更為文字單位] †削除字串的指定部分。第一參數為對象字串、第二參數為開始削除的文字位置、第三參數為要削除掉的文字數。 Test { _i = "ABCDEFGHIJ" _i = ERASE(_i, 3, 4) _i } 結果為"ABCHIJ"。 ERASEVAR [v4:ERASEVARIABLE改名] †將指定的變數削除掉。參數請輸入寫有變數名稱的字串。 EVAL †將輸入的字串作為 單一的文指令碼去實行。 例如以下的程式碼為把1代入變數 i 中。 EVAL("i=1") 文並不存在逸出序列(escape sequence),字串內要包含雙括號的話請使用CHR(34)。例如將"test"代入變數 i 的寫法如下。 EVAL("i=%(CHR(34))test%(CHR(34))") 想在執行的時候進行%的展開時,也請將%寫作CHR(37)。 EVAL("%(CHR(34))%(CHR(37))(foo)%(CHR(34))") 轉換字串的 TOSTR(EVAL("formula")) 和埋入字串展開的 "%(formula)" 兩種寫法,其結果與EVAL的結果相同。 EXECUTE [Tc513-901] †EXECUTE( path [ , option ] ) 執行外部程式。 EXECUTE_WAIT [Tc532-1] †EXECUTE_WAIT( path [ , option ] ) 執行外部程式並等待其結束。 FATTRIB †取得檔案的屬性。 ARCHIV,COMPRESSED,DIRECTORY,HIDDEN,NORMAL,OFFLINE,READONLY,SYSTEM,TEMP * [0] ARCHIV 保存文件,或是保存資料夾。~ * [1] COMPRESSED 壓縮文件,或是壓縮資料夾。~ * [2] DIRECTORY 資料夾/目錄。確認此值的話,即可分辨對象是普通的文件還是資料夾。~ * [3] HIDDEN 隱藏文件,或是隱藏資料夾。~ * [4] NORMAL 無屬性。~ * [5] OFFLINE 這個檔案現在無法使用。~ * [6] READONLY 唯讀檔。~ * [7] SYSTEM Windows用檔案。~ * [8] TEMP 暫存檔。~ FCHARSET †指定檔案寫入/讀取時使用的文字編碼。 預設的文字編碼為基礎設定檔案中charset項目的設定值。 FCLOSE [v4] †關閉用FOPEN打開的檔案。 FCOPY [v4] †複製檔案。 FDEL [v4] †刪除檔案。 FDIGEST [Tc527-1, Tc530-1追加CRC32] †FDIGEST( path , type ) 對指定的檔案產生雜湊值。
成功時返回雜湊值的16進數,失敗時返回-1。 FENUM [v4] †列舉指定位置存在的檔案名/資料夾名,以逗號區隔並傳回。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。 資料夾的名稱會在前頭附加 " \ " 。 FLOOR [v4] †實數的小數點無條件捨去。 FMOVE [v4] †移動檔案。 FOPEN [v4] †開啟檔案。 * "w" 或是"write" 開啟寫入模式。~ * "r" 或是"read" 開啟讀取模式。~ * "a" 或是"append" 開啟追加模式。 返值 0 / 1 / 2 = 失敗 / 成功 / 已經開啟過了。 FREAD [v4] †對已開啟讀取模式的檔案進行一行的讀取。 會自動去掉改行文字。 FREADBIN [Tc516-901] †FREADBIN( path , size [ , char ] ) 不轉換文字編碼而讀取檔案。 引數:
FREADENCODE [Tc535-1] †FREADENCODE( path , size [ , type ] ) 讀取被URL編碼或Base64編碼的檔案。 引數:
FRENAME [v4] †變更檔案名稱。 FSEEK [Tc516-901] †FSEEK( path , offset , origin ) 改變檔案存取位置(檔案指針)。 引數:
返值 0 / 1 = 失敗 / 成功 FSIZE [v4] †取得指定檔案的大小(bytes數)。 失敗的情況下則回傳-1的值。 FTELL [Tc516-901] †FTELL( path ) 獲得檔案存取位置(檔案指針)。 引數:
成功時返回從檔案開端數起的位元組數,失敗時返回-1。 FWRITE [v4] †對已開啟讀取模式的檔案進行寫入字串的動作。 FWRITE2 [v4] †對已開啟讀取模式的檔案進行寫入字串的動作。 FWRITE會自動輸入改行符號。FWRITE2不會。 FWRITEBIN [Tc516-901] †FWRITEBIN( path , string [ , char ] ) 不轉換文字編碼就寫入至檔案。 引數:
無返值。 GETCALLSTACK [Tc513-901] †GETCALLSTACK() 以泛用陣列回傳使用者函數的呼叫堆疊。 GETDELIM †傳回指定變數所設定的分隔符號(簡易陣列中用來分隔元素的文字)。預設分隔符號為半形逗號。 GETFUNCLIST [Tc513-901] †GETFUNCLIST( [ prefix ] ) 取得函數清單。 引數:
成功時返回函數清單的泛用陣列,失敗時返回IARRAY。 GETLASTERROR [v4:返值的體系變更] †傳回發生的系統函式錯誤類型的代碼。代碼如下列所示。
這個函式的返值也可以用SETLASTERROR函式來進行設定。 SETLASTERROR(0) (使用系統函式做某些處理) if !GETLASTERROR { "錯誤發生。" } GETMEMINFO [v4:類似於memory系系統變數] †取得動作環境的記憶體情報。結果會傳回下列的泛用陣列。 物理記憶體的使用率,物理記憶體量,剩餘物理記憶體量,虛擬 + 物理記憶體量,虛擬 + 物理剩餘記憶體量 GETSECCOUNT [Tc513-901] †GETSECCOUNT( [ yyyy [ , mm [ , dd [ , wd [ , HH [ , MM [ , SS ] ] ] ] ] ] ] ) 從1970/1/1 00:00:00 UTC起,到參數所指定的時間所經過的秒數。 引數: 全部省略時為現在時間。 部份省略時省略的會以現在的值補上。
返值:秒數。 GETSETTING †GETSETTING( string ) 傳回作動中的AYA的相關設定情報。
GETSTRBYTES †傳回儲存字串所必要的byte數。 第二參數可省略,預設為0(Shift_JIS)。 GETTICKCOUNT [v4:類似於系統變數systemuptickcount] †傳回OS啟動至今的經過時間。單位ms。超過24日20小時的話值會回到0。 GETTIME [v4:類似於時刻取得系系統變數] †現在的時間情報取得。返回結果即以下的泛用陣列。 西元,月,日,星期,時,分,秒 星期為0~6、0是星期日。 GETTYPE [v4:類似於ISINTEGER、ISREAL] †取得值的類型。 GETTYPEEX [Tc537-3] †比GETTYPE更嚴謹的取得值的類型。 (使用方法請參照GETTYPE) GETVARLIST [Tc513-901] †GETVARLIST( [ prefix ] ) 取得現存的變數清單。 引數:
成功時返回變數清單的泛用陣列,失敗時返回IARRAY。 HAN2ZEN [Tc513-901] †HAN2ZEN( src [ , type ] ) 轉換字串中的全部半角英文字・數字・片假名為全角。
成功時回傳轉換後的字串,失敗時不回傳。 HEXSTRTOI [v4:HEXSTRTONUM改名] †將16進數值字串轉換成整數。參數異常時會傳回0。 IARRAY †傳回空的泛用陣列。 INSERT [v4:byte單位換成文字單位] †插入字串。第一參數為對象字串、第二參數為要插入的文字位置、第三參數為要插入的字串。 Test { _i = "ABCHIJ" _i = INSERT(_i, 3, "DEFG") _i } 結果為"ABCDEFGHIJ"。 ISFUNC [v4:ISFUNCTION改名] †傳回指定名稱的函式是否存在。 ISINTSTR †輸入的字串如果可以解釋為整數的話傳回 1 ,其餘為 0 。 ISREALSTR †輸入的字串如果可以解釋為實數的話傳回 1 ,其餘為 0 。 ISVAR †傳回指定名稱的變數是否存在。 LETTONAME [v4] †第一參數所指定的字串會被轉換成變數,第二參數為代入的值。 LICENSE [Tc530-1] †回傳 YAYA 的使用者條款。 LOADLIB [v4] †讀取外部程式庫。做LoadLibrary,實行load。 LOG [v4] †傳回自然對數。 LOG10 [v4] †傳回常用對數。 LOGGING [v4:指定字串的寫入方式變更] †把指定的值寫入LOG檔。不問值的型別。值為簡易陣列時會用逗號結合所有元素。 LSO †Last Selection Order. 最後進行的選擇的結果,傳回其位置的值。 request { _i = foo LSO } foo { "earth" "moon" "sun" } _i是"sun"的時候,LSO即為2。 總之,必須在選擇進行的同時一起執行。在字串選擇執行完畢後才取得的LSO值是沒有意義的。 request { { "This is a "+ANY("pen", "pencil", "eraser")+"." } res = LSO } 如果想得到ANY的選擇結果的話,這樣的寫法是錯誤的。這裡LSO所取得的值為LSO所處在的 { } 所執行的選擇。因此 res 永遠為 0 。 request { { "This is a "+ANY("pen", "pencil", "eraser") + "." res = LSO } } 出力確定子存在的場合,LSO會取得全部組合並進行相應的動作。 request { { "1" "2" "3" -- "A" "B" } _i = LSO } 例如上述函式内的{ }部份會有以下幾種輸出情況。 "1A" "2A" "3A" "1B" "2B" "3B" LSO值的範圍也和此相同,取得0~5的值。各值與上述輸出種類的順序一致。 MKDIR [v4] †作成資料夾。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。 POW [v4] †傳回第一參數的第二參數次方。 RAND [v4] †亂數取得。第一參數為指定的亂數範圍。產生 0 ~ (第一參數 -1 ) 之間的值。 RE_GETLEN †正則表達系函式的實行結果取得。 RE_GETPOS †正則表達系函式的實行結果取得。 RE_GETSTR †正則表達系函式的實行結果取得。 RE_GREP †使用正則表達式(Regular Expression)對字串進行檢索,並列出結果。 詳細的結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。 使用可能的正則表達式語法可至以下網址參考。 中文的可上網搜尋"Regular Expression"即可找到相當多的教學文章。 RE_MATCH †處理對象字串全體與寫入的正則表達式完全吻合時返回 1 。其他情況則返回 0 。 詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。 RE_OPTION [Tc534-1] †RE_OPTION( [ option ] ) 設定Perl互換正則表達式選項。
標準設定只有m。 引數:
返值:選項,如:"imx" RE_REPLACE †利用正則表達式對字串進行檢索,將找到的吻合部份全部取代成別的字串。 在使用 RE_REPLACE 與 RE_SPLIT 時,RE_GETSTR、RE_GETPOS、RE_GETLEN
的意義與其他RE系函式有些不同。其中的差異在於一邊是「第 i 次吻合的 ( ) 的內容」,一邊是「在對象字串中表示正則表達全體所吻合的第 i
項的内容」。 RE_REPLACEEX [Tc513-901] †RE_REPLACEEX ( string , regexp , replace_ex ) 和RE_REPLACE一樣,但支援Perl式參照操作符($1、$2等)。 RE_SEARCH †利用正則表達式對處理對象字串進行檢索,如果其中有與正則表達式吻合的地方則傳回 1 。沒有時則傳回 0 。 詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。 RE_SPLIT †利用正則表達式分割字串。分割後的結果傳回泛用陣列。 READFMO [Tc524-1] †READFMO( [ name ] ) Windows專用。 引數:
RESTOREVAR [Tc513-901] †RESTOREVAR( [ path ] ) 從存檔中復原變數。 引數:
不返值。 REPLACE [v4:Byte單位轉換成文字單位] †取代字串。 REQUESTLIB [v4:返值追加] †將 Load 完畢的外部程式庫根據 request 送出字串,取得結果。 RMDIR [v4] †刪除資料夾。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。無法刪除空的資料夾。 ROUND [v4] †四捨五入實數的小數點部份。 SAVEVAR †變數保存。與unload時實行的處理是相同的。 SETDELIM [v4:SETSEPARATOR改名] †設定變數的標準分隔符號(簡易陣列中用來區別元素的分隔文字)。預設為半形逗號。 這個函式有以下的限制存在。請注意一下。 _i = (var, "/") SETDELIM(_i) 上述例子是打算將變數var的分隔符號變更為 " / " ,但是事實上這個程式碼無法正常運作。 SETDELIM(var, "/") SETLASTERROR †用整數設定GETLASTERROR函式返回的值。 SETSETTING [Tc513-901] †SETSETTING( name , string ) 改變動作中的YAYA設定情報。 有些項目設定後沒改變。 (要調查) 引數:
返值 0 / 1 = 失敗 / 成功 SIN [v4] †返回正弦值。參數的單位為radian。 SINH [Tc522-1] †返回雙曲正弦值。參數的單位為radian。 SPLIT †將分割的文字串以泛用陣列傳回。可以用RE_SPLIT代替,不過不使用正則表達式時比較快。 _array = SPLIT("A//B//C//D//E"," //", 3) _array 即 ("A", "B", "C//D//E") 。 SPLITPATH †分解輸入的路徑字串,放入泛用陣列並傳回。 _i = SPLITPATH("C:\umeici\sample\readme.txt") _i 的4個元素分別為 "C:","\umeici\sample\","readme",".txt" 。 SQRT [v4] †傳回值的平方根。 STRDECODE [Tc532-1, Tc521-1至Tc532-1叫GETSTRURLDECODE] †STRDECODE( string [ , code ] [ , type ] ) 字串解碼。 引數:
成功時回傳轉換後的字串,失敗時回傳0。 STRENCODE [Tc532-1, Tc521-1至Tc532-1叫GETSTRURLENCODE] †字串編碼。 引數:
成功時回傳轉換後的字串,失敗時回傳0。 STRFORM †傳回格式化的字串。與C言語的 sprintf 機能類似。 以下為 STRFORM 與 sprintf 的比較。除了有返值和格式指定的前置字元為" $ "這兩點不同之外,基本上是同樣的用法。 // C言語 int year = 1941; char *warname = "太平洋"; sprintf(str, "%04d年 %s戰爭爆發。", year, warname); // 文 year = 1941 warname = "太平洋" str = STRFORM("$04d年 $s戰爭爆發。", year, warname) 一個格式指定所能展開的最大字串長度為1024文字。 STRLEN [v4:byte單位轉換成文字單位、2參數的方式已廢止] †傳回字串的文字數。 STRSTR [v4:byte單位轉換成文字單位。2參數的方式已廢止] †對字串内的部分字串進行檢索,傳回找到的文字位置。 SUBSTR [v4:byte單位轉換成文字單位] †取出字串中的部分字串。 TAN [v4] †返回正切值。參數的單位是radian。 TANH [Tc522-1] †返回雙曲正切值。參數的單位是radian。 TOAUTO [Tc516-901] †TOAUTO(string) 將字串轉換成整數或實數。參數異常時傳回原字串。 TOBINSTR [v4] †將整數轉換成2進位數值字串。參數異常時傳回空字串。 TOHEXSTR [v4] †將整數轉換成16進位數值字串。參數異常時傳回空字串。 TOINT [v4:TONUMBER2改名] †將字串轉換成整數。參數異常時傳回空字串。 TOLOWER [v4] †將字串中含有的大寫英文字母轉換成小寫英文字母。 TOREAL †將字串轉換成實數。參數異常時傳回0.0。 TOSTR [v4:TOSTRING2改名] †將整數、實數、泛用陣列轉換成字串。 輸入泛用陣列時,會傳回以逗號結合的字串。也就是說,泛用陣列會轉換成簡易陣列。 TOUPPER [v4] †將字串中含有的小寫英文字母轉換成大寫英文字母。 UNLOADLIB [v4] †將LOADLIB所讀取的外部程式庫進行 unload 之後,執行FreeLibrary。參數為讀取時所指定的程式庫檔名。 ZEN2HAN [Tc513-901] †ZEN2HAN( src [ , type ] ) 轉換字串中的全部全角英文字・數字・片假名為半角。
成功時回傳轉換後的字串,失敗時不回傳。 附錄:文字編碼 †YAYA內部文字編碼 †
文字編碼和YAYA內的文字編碼ID †
有關文字編碼「二進碼」 †文字編碼「二進碼」是特殊的文字編碼,是直接使用UCS-2字串的下位位元組的編碼。 預定是主要與 FWRITEBIN, FREADBIN 等組合使用,把「二進碼」狀態的字串直接存取外部的用法。 但是要注意字串中的0x00無法存取是由於YAYA本身的限制所限。 還有,FUNCTIONEX等既存的系統辭書中並不會想到字串會是二進碼的。 |